import tensorflow as tf
import numpy as np 
import matplotlib.pyplot as plt 

x=tf.constant([[1,2],[3,4]])
print('2行2 的矩阵\n',x)
print('-----------------')


a=tf.constant(np.pi,dtype=tf.float16)
print('tf.float16低精度张量',a)

aa=tf.cast(a,tf.double)
print('转换高精度后的张量',aa)


a=tf.constant([-1,0,1,2])
aa=tf.Variable(a)
aa1=tf.Variable(a,trainable=False)
print('查看Variable类型张量的name属性:\n',aa.name)
print('__________')
print('查看Variable类型张量的trainable属性：\n',aa1.trainable)

#正态分布
a=tf.random.normal([2,2],mean=1,stddev=2)
print('创建均值 mean 为 1， 标准差 stddev 为 2 的正态分布:\n',a)
#均匀分布
a=tf.random.uniform([2,4],maxval=10)
print('创建区间为[0,10]的2*4矩阵\n',a)

x=tf.random.uniform([28,28],maxval=10,dtype=tf.int32)

#增加维度
x=tf.expand_dims(x,axis=2)
print(x.shape)
print('---------------------------------')
x=tf.expand_dims(x,axis=0)
print(x.shape)
#删除维度
x=tf.squeeze(x,axis=0)
print('删除维度后的维度\n',x.shape)


x = tf.random.uniform([1,28,28,1],maxval=10,dtype=tf.int32)
print('未做维度改变的维度：\n',x.shape)
print('----------------')
x=tf.squeeze(x) 
print('未指定axis参数的维度改变后的维度：\n',x.shape)



x = tf.random.normal([2,32,32,3])
print('未交换前的维度：\n',x.shape)
print('-----------------')
x=tf.transpose(x,perm=[0,3,1,2]) # 交换维度
print('交换后的维度：\n',x.shape)


x = tf.random.uniform([2,2],maxval=100,dtype=tf.int32)
print(x)
print('------------------')
xx=tf.reduce_min(x,axis=0)
print('维度1上的最小值：\n',xx)
xx=tf.reduce_max(x,axis=0)
print('维度1上的最大值：\n',xx)
xx=tf.reduce_max(x)
print('全局的最大值：\n',xx)
xx=tf.reduce_mean(x,axis=1)
print('统计1维度上的均值：\n',xx)
xx=tf.reduce_sum(x,axis=1)
print('统计1维度上的和值：\n',xx)


x = tf.random.uniform([2,2],maxval=10,dtype=tf.float64)
print('x:\n',x)
y = tf.random.uniform([2,2],maxval=10,dtype=tf.float64)
print('y:\n',y)
z = tf.add(x,y)
print('两个张量的对应元素相加：\n',z)
z = tf.subtract(x,y)
print('两个张量的对应元素相减：\n',z)
z = tf.multiply(x,y)
print('两个张量的对应元素相乘：\n',z)
z = tf.divide(x,y)
print('两个张量的对应元素相除：\n',z)
z = tf.square(x)
print('某个张量的平方:\n',z)
z = tf.pow(x,2)
print('某个张量的n次方:\n',z)
z = tf.sqrt(x)
print('某个张量的开方:\n',z)
z = tf.matmul(x,y)
print('两个矩阵相乘:\n',z)


